﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CKSE.Interfaces;

namespace Skyrim
{
    public class SkyrimScriptManager : IScriptManager
    {
        #region Fields
        private IGame _game;
        private Dictionary<string, IScript> _items;
        private readonly object _syncRoot = new object();
        #endregion

        #region Properties
        /// <summary>
        /// 
        /// </summary>
        public IGame Game
        {
            get
            {
                return _game;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        public object SyncRoot
        {
            get
            {
                return _syncRoot;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        public Dictionary<string, IScript> Items
        {
            get
            {
                if (_items == null)
                {
                    _items = new Dictionary<string, IScript>();
                }
                return _items;
            }
        }
        #endregion

        #region Life Cycle
        /// <summary>
        /// 
        /// </summary>
        /// <param name="game"></param>
        public SkyrimScriptManager(IGame game)
        {
            _game = game;
        }
        #endregion

        #region Methods
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        /// <param name="content"></param>
        public void Create(string scriptName, string content)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="script"></param>
        /// <param name="content"></param>
        public void Create(IScript script, string content)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        /// <returns></returns>
        public bool Exists(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="script"></param>
        /// <returns></returns>
        public bool Exists(IScript script)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        public void Backup(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="script"></param>
        public void Backup(IScript script)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        public void Delete(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="script"></param>
        public void Delete(IScript script)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        /// <param name="newName"></param>
        public void Rename(string scriptName, string newName)
        {
            throw new NotImplementedException();
        }

        public void Rename(IScript script, string newName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        public void Restore(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="script"></param>
        public void Restore(IScript script)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        public void Clean(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="script"></param>
        public void Clean(IScript script)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        public void Load(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        public void LoadAll()
        {
            throw new NotImplementedException();
        }      

        #region Async Methods
        /// <summary>
        /// 
        /// </summary>
        /// <param name="scriptName"></param>
        public void LoadAsync(string scriptName)
        {
            throw new NotImplementedException();
        }
        /// <summary>
        /// 
        /// </summary>
        public void LoadAllAsync()
        {
            throw new NotImplementedException();
        }
        #endregion
        #endregion
    }
}
